iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
Software Development

初學軟體開發系列 第 17

Day17-Column_Row線性布局

  • 分享至 

  • xImage
  •  

今日學習內容
線性布局

線性布局最主要用到的組件有兩個,一個是Column,另一個是Row,前者是由上往下布局,後者是由左至右布局。
他們兩個的屬性都一樣,所以學一次就可以學兩個。

開始
我在主dart檔下面再新增一個dart檔,取名叫row_column.dart,裡面放今天要寫的。
https://ithelp.ithome.com.tw/upload/images/20220917/2015191812sSuVqVvF.png
程式碼:

import 'package:flutter/material.dart';

class RowColumnPage extends StatelessWidget {
  const RowColumnPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

還要在主dart裡新增此檔案
https://ithelp.ithome.com.tw/upload/images/20220917/20151918PJZN3d9qaN.png
然後要寫進body裡
Column
接著回到row_column.dart檔開始撰寫,column最主要的屬性是children, children[],,在裡面放FlutterLogo來做測試。
https://ithelp.ithome.com.tw/upload/images/20220917/20151918qdnNoVWpsm.png
但是Column占了畫面多少空間看不出來,所以我用Container把Column包起來,用Container是因為可以包住子元素上面,並且使用color來讓畫面有不同顏色,就可以看到Column占了多少空間。
https://ithelp.ithome.com.tw/upload/images/20220917/20151918yUVccJdrZB.png
程式碼:

class RowColumnPage extends StatelessWidget {
  const RowColumnPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Container(
      color:Colors.amber,
      child :Column(
        children: const[
          FlutterLogo(size:100),
          FlutterLogo(size:200),
          FlutterLogo(size:300),
        ],
      ),
    );
  }
}

還可以讓Logo對齊,左圖是對齊上方,右圖是對齊底部。
https://ithelp.ithome.com.tw/upload/images/20220917/20151918FQfoOzAsDF.png
左圖程式碼:
mainAxisAlignment: MainAxisAlignment.start,
右圖程式碼:
mainAxisAlignment: MainAxisAlignment.end,
也可以置中,mainAxisAlignment: MainAxisAlignment.center,
圖之間空一行,mainAxisAlignment: MainAxisAlignment.spaceBetween
平均分配,mainAxisAlignment: MainAxisAlignment.spaceEvenly,

另外,如果要撐滿整個畫面的話,可以使用crossAxisAlignment:CrossAxisAlignment.stretch,
https://ithelp.ithome.com.tw/upload/images/20220917/20151918UJrpKH6O93.png


當我們要做左到右的布局,可以直接把Column換成Row就可以了。

總結
今天除了學習到Column的布局,還學到如何串接檔案跟檔案之間的使用。


上一篇
Day16-Flutter app頁面設計
下一篇
Day18-Flutter模型框架版面
系列文
初學軟體開發31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言